package com.example.joke.base.http

import android.content.Context
import com.google.gson.Gson

abstract class HttpCallBack<T> : EngineCallBack {

    override fun onPreExecute(context: Context, params: HashMap<String, Any>) {

        params.put("app_name", "Joke")
        params.put("version_name", "1.0.2")
        params.put("device_id", "86783huf98e3")
        // ...

        // 开始请求接口前执行的方法
        onPreExecute()
    }

    open fun onPreExecute() {

    }

    // 将此方法覆盖重写，真正请求接口时候只需要实现下方onSuccess方法
    override fun onSuccess(result: String) {
        val gson: Gson = Gson()
        val resultObj: T = gson.fromJson(result, HttpUtils.analysisClazzInfo(this)) as T
        onSuccess(resultObj)
    }

    // 返回可以直接操作的对象
    abstract fun onSuccess(result: T)
}